package com.ftg.learn.chapter07;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

/**
 * 字符串练习4
 *
 * @author lijiaxin
 * @version 1.0
 * @date 2023/7/19 13:57
 */

public class StringTest04 {

    public static void q1(int[] arr){
//        1、定义一个数组内容为{1,2,3}.定义两个String类型内容为hello与world。
//        要求输出结果为：[word1#word2#word3]。
//        int[] arr={1,2,3};
//        String str1="hello";
//        String str2="world";
//        String arr1=String.valueOf(arr);
//        for (int i = 0; i < arr.length; i++) {
//            arr1=arr1.
//        }
//        System.out.println(Arrays.toString(arr));

        StringBuilder str=new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            str.append("word").append(arr[i]).append("#");
        }
        System.out.println(str);
    }

    public static void q2(String str){
//        3、分析以下需求,并用代码实现
//        键盘录入一个字符串，要求删除该字符串中的所有java字符串（最终的字符串中不能包含java），
//        要求打印删除后的结果以及删除了几个java字符串比如键盘录入: java woaijava,i like jajavava i enjoy java程序输出结果:原字符串 woai,i like i enjoy 中总共包含:5 个 java 删除java后的字符串为: woai,i like i enjoy
//        String str="java woaijava,i like jajavava i enjoy java";
//        StringBuffer s=new StringBuffer(str);
//        int num=0;
//        for (int j = 0; j < str.length()/4; j++) {
//        for (int i = 0; i < str.length(); i++) {
//            if(str.charAt(i)=='j'&&str.charAt(i+1)=='a'&&str.charAt(i+2)=='v'&&str.charAt(i+3)=='a'){
//                str= s.delete(i,i+4).toString();
//                num++;
//            }
//        }
//        }
//        System.out.printf("有"+num+"个java"+"删除后"+str);

        Scanner scanner=new Scanner(System.in);
        String word= scanner.nextLine();

        int len=word.length();
        while (word.contains(str)){
            word=word.replace("java","");
        }
        System.out.println(word);
        System.out.println((len-word.length())/4);
    }

    public static void q3(){
//        4、创建一个一维数组arr(String类型)，里面元素有{“a”,”s”,”d”,”f”,”a”,”a”,”d”,”2”,”3”,”8”}，
//        根据里面的元素随机生成一个长度为5的字符串，将该字符串中相同的元素去重然后再反序输出到控制台上
        String[] arr= {"a","s","d","f","a","a","d","2","3","8"};
        Random random=new Random();
        String str="";
        String newstr="";
        int count=0;
            for (int i = 0; i < arr.length; i++) {
                if(count<5){
                    count++;
                    int index =random.nextInt(10);
                    str+=arr[index];
                }
        }
        System.out.println("随机："+ str);
        for (int i = 0; i < str.length(); i++) {
            int index=newstr.indexOf(str.charAt(i));
            if(index==-1){
                newstr+=str.charAt(i);
            }
        }
        System.out.println("去重："+ newstr);
        StringBuilder s=new StringBuilder(newstr);
        System.out.print("翻转："+ s.reverse());
    }

    public static void q4(){
//        5、按需求完成指定功能，题目如下：
//        (1)打印由7，8，9三个数组组成的三位数，要求该三位数中任意两位数字不能相同
//        (2)打印格式最后的三位数字以空格分隔，如789 798 879 897 978 987
        int[] arr={7,8,9};
//        for (int i = 0; i < arr.length; i++) {
//            System.out.printf(String.valueOf(arr[i]),Math.max(arr[i+1],arr[i+2]),Math.min(arr[i+1],arr[i+2]));
//        }
        for (int i = 0; i < arr.length; i++) {
            int first=0;
            int second=0;
            switch (i){
                case 0:
                    first=i+1;
                    second = i + 2;
                    break;
                case 2:
                    first = i - 1;
                    second = i - 2;
                    break;
                default:
                    first = i - 1;
                    second = i + 1;
            }
            System.out.printf("%d %d %d\t", arr[i], Math.max(arr[first], arr[second]), Math.min(arr[first], arr[second]));
            System.out.printf("%d %d %d\t", arr[i], Math.min(arr[first], arr[second]), Math.max(arr[first], arr[second]));
        }
    }



    public static void q5(){
//        6、按需求完成指定功能，题目如下：
//        (1)定义数字字符串数组{“010”,“3223”,“666”,“7890987”,“123123”}
//        (2)判断该数字字符串数组中的数字字符串是否是对称(第一个数字和最后一个数字相等，第二个数字和倒数第二个数字是相等的，依次类推)的，并逐个输出
//        (3)如：010 是对称的，3223 是对称的，123123 不是对称的
        String[] str={"010","3223","666","7890987","123123"};
        for (int i = 0; i < str.length; i++) {
            StringBuilder stringBuilder=new StringBuilder(str[i]);
            System.out.println(stringBuilder);
            String s = stringBuilder.reverse().toString().equals(str[i]) ? "是回文数" : "不是回文数";
            System.out.println(s);
        }
    }

    public static void q6(int[] arr) {
//        中间项 中间下标 {3,1,2,6,5,1} 判断有没有   3+1+2=5+1    {3，-1，2，1，1}
        /**  1，-1，3
         * （和-中间值）/2==左侧值
         */

//        boolean a=false;
//        int middle1 = 0;
//        int middelindex=0;
//        for (int i = 0; i < arr.length; i++) {
//            if (arr.length == 1) {
//                a = false;
//                System.out.println("中间值就是本身");
//                break;
//            }
//            if (arr.length == 2 && (arr[0] == 0 || arr[1] == 0)) {
//                System.out.println("不是0的那位是中间值");
//                break;
//            }
//        }
//        for (int i = 0; i < arr.length; i++) {
//            int leftsum=0;
//            int rightsum=0;
//            for (int j = 0; j < i; j++) {
//                leftsum+=arr[j];
//            }
////            0---i  i+1----arr.length
//            for (int k = i+1; k < arr.length; k++) {
//                rightsum+=arr[k];
//            }
//            if(rightsum==leftsum){
//                middle1 = arr[i];
//                middelindex=i;
//                a=true;
//                break;
//            }
//        }
//        if(a=true){
//            System.out.println("有中间值"+middle1+"下标为"+middelindex);
//        }else{
//            System.out.println("没有中间值");
//        }
    }
//    中间值
        public static int findIndex(int[] nums) {
            //求总和
            int total = Arrays.stream(nums).sum();

            int sum = 0;
            for (int i = 0; i < nums.length; ++i) {
                if (2 * sum + nums[i] == total) {
                    return i;
                }
                sum += nums[i];
            }
            return -1;

    }


static  char c;
    public static void main(String[] args) {
//        int[] arr={1,2,3};
//        q1(arr);
//        q2("java");
//        q3();
//        q4();
//        q5();

        //        10个  6 7 8 9(通用性的问题)

//        System.out.println(c);
        int[] arr = {3,-1,1};
        q6(arr);
    }
}
